package com.itlong.cloud.property.service;

import com.itlong.cloud.POJO.DTO.property.PropertyInspectSettingDTO;
import com.itlong.cloud.POJO.VO.property.PropertyInspectSettingVO;
import com.itlong.cloud.utils.page.Page;
import org.springframework.web.bind.annotation.RequestBody;

import java.util.List;

/**
 * <desc>
 *      物业-巡检设置服务接口
 * <desc/>
 *
 * @createDate 2019/12/24
 */
public interface IPropertyInspectSettingService {

    /**
     * <desc>
     *      添加巡检设置相关处理。
     * <desc/>
     *
     * @param  dto 巡检相关信息
     * @return
     * @author Juguang.S
     * @createDate 2019-12-24
     */
    Integer saveInspectPoint(PropertyInspectSettingDTO dto) throws Exception;

    /**
     * <desc>
     *      获取巡检点编号 即蓝牙门禁deviceUnique。
     * <desc/>
     *
     * @param  dto 巡检点信息
     * @return
     * @author Juguang.S
     * @createDate 2019-12-24
     */
    List<String> getInspectPointNumber(@RequestBody PropertyInspectSettingDTO dto);

    /**
     * <desc>
     *      获取巡检设置相关分页列表。
     * <desc/>
     *
     * @param  dto 查询条件
     * @return 巡检分页集合
     * @author Juguang.S
     * @createDate 2019-12-24
     */
    Page<PropertyInspectSettingVO> getInspectInfoByPage(PropertyInspectSettingDTO dto) throws Exception;

    /**
     * <desc>
     *      修改巡检设置相关状态。
     * <desc/>
     *
     * @param  dto 修改状态相关参数
     * @return
     * @author Juguang.S
     * @createDate 2019-12-24
     */
    Integer updateInspectSettingStatus(PropertyInspectSettingDTO dto);

    /**
     * <desc>
     *      校验巡检区域、巡检点、巡检路线、巡检计划的名称是否存在。
     * <desc/>
     *
     * @param  dto 巡检相关信息
     * @return
     * @author Juguang.S
     * @createDate 2019-12-25
     */
    Integer isExistByInspectName(PropertyInspectSettingDTO dto);

    /**
     * <desc>
     *      删除巡检相关需校验是否与上级有所关联，有关联不允许删除。
     * <desc/>
     *
     * @param  dto 巡检信息
     * @return
     * @author Juguang.S
     * @createDate 2019-12-26
     */
    Integer isRelationByInspect(PropertyInspectSettingDTO dto);

    /**
     * <desc>
     *      获取巡检路线详情。
     * <desc/>
     *
     * @param  dto 巡检路线ID
     * @return 巡检路线详情
     * @author Juguang.S
     * @createDate 2019-12-26
     */
    PropertyInspectSettingVO getInspectLineInfo(PropertyInspectSettingDTO dto);

    /**
     * <desc>
     *      获取巡检点列表。
     * <desc/>
     *
     * @param  dto 项目ID
     * @return 巡检点列表
     * @author Juguang.S
     * @createDate 2019-12-27
     */
    List<PropertyInspectSettingVO> getInspectPointList(PropertyInspectSettingDTO dto);

    /**
     * <desc>
     *      根据巡检相应ID获取名称。
     * <desc/>
     *
     * @param  dto 巡检相关信息
     * @return
     * @author Juguang.S
     * @createDate 2020-01-08
     */
    PropertyInspectSettingVO getInspectNameById(PropertyInspectSettingDTO dto);

}
